Docker Start

Docker

参考

基本原理

  • Docker 使用 Google 公司推出的 Go 语言 进行开发实现,基于 Linux 内核的 cgroup,namespace,以及 AUFS 类的 Union FS 等技术,
    对进程进行封装隔离,属于操作系统层面的虚拟化技术。由于隔离的进程独立于宿主和其它的隔离的进程,因此也称其为容器。最初实现是基于 LXC,
    从 0.7 以后开始去除 LXC,转而使用自行开发的 libcontainer,从 1.11 开始,则进一步演进为使用 runC 和 containerd。

  • 和传统的虚拟机的差别
    传统虚拟机
    DOcker

核心概念

  • 镜像Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:14.04 就包含了完整的一套 Ubuntu 14.04 最小系统的 root 文件系统。镜像构建时候是分层构建,研究Dockerfile时候详细讨论。
  • 容器 镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
  • 仓库 例如Docker Hub,Docker Store等等.也可以利用Nexus Repository Manager建立私有仓库管理。

常用命令 (以redis镜像myredis容器举例)

  • 获取镜像

    docker pull redis

  • 推送镜像

    docker push alex/redis:1.0

  • 删除容器

    docker rm mynginx

  • 删除镜像

    docker rmi redis

  • 管理数据卷

    docker volumes ls(create/inspect/rm)

  • 查看docker版本信息

    docker version

  • 查看容器的日志

    docker logs myredis

  • 登陆dockerhub账号

    docker login; docker logout

  • 查看镜像历史

    docker history redis

  • 暂停/启动容器所有进程

    docker unpause/pause myredis

  • 查看所有运行的进程

    docker ps(查看所有docker进程 docker ps -a)

  • 进入运行中的容器(不过我不知道什么用 基本被docker exec 取代)

    docker attach myredis

  • 从Dockerfile构建镜像

    docker build dockerfile

  • 提交镜像

    docker commit myredis

  • 从宿主系统拷贝文件

    docker cp file.ext myredis:/path/to/file.ext

从容器拷贝文件到宿主机

docker cp myredis:/path/to/file.ext

  • 查看容器详细信息
    docker inspect myredis
  • 新建容器
    docker create anotherredis
  • 查看容器内的文件系统变化
    docker diff myredis
  • 输出服务器上所有的docker及时事件
    docker events
  • 在运行的docker容器中执行命令
    docker exec -it myredis /bin/bash
  • 以TAR形式导出整个容器到本地文件系统
    docker export myredis > redis.tar

或者

docker export –output=”redis.tar” myredis

  • 列出所有镜像
    docker images
  • 从TAR文件创建一个docker镜像
    docker import redis.tar
  • 查看docker系统信息
    docker info
  • 强制关闭容器 相当于直接发送kill -9 信号
    docker kill myredis
  • 从TAR文件中加载镜像
    docker load < redis.tar
  • 管理docker网络
    docker network ls;docker networrk create…
  • 查看docker集群节点
    docker node ls
  • 重命名容器
    docker rename myredis alexredis
  • 重启容器
    docker restart myredis
  • 运行容器(实例化),如果没有这个镜像会试图从远端pull
    docker run –name myredis -p 6380:6379 -v /data/redis:/data -d redis redis-server –appendonly yes
  • 查看容器端口相关
    docker port myredis
  • 停止容器 和kill的区别就和linux直接kill和stop区别一样
    docker stop myredis

(首先给容器发送一个TERM信号,让容器做一些退出前必须的保护性、安全性操作,然后让
容器自动停止运行,如果在一段时间内,容器还是没有停止,再进行kill -9,强行终止)

  • Docker镜像TAR归档

    docker save redis:3.2.5 > redis.tar

  • 搜索dockerhub查询景象

    docker search redis

  • 管理Docker Service(配合Docker Swarm )

    docker service ls

  • 启动容器

    docker start myredis

  • 查看容易资源占用情况

    docker stats

  • Docker集群管理Swarm

    docker swarm init

  • 给本地镜像打标签

    docker tag redis redis:1.0

  • 显示容器内运行的进程

    docker top myredis

  • 更新容器的一些配置

    docker update –cpu-shares 512 -m 300M myredis mynginx

  • 一直到这个容器停止才中止,并打印出退出码

    docker wait myredis

常用镜像

dockerui

  • 提供Docker UI管理界面
  • docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock uifd/ui-for-docker
  • open your browser to http://:9000

    shipyad

  • docker集群管理界面
  • 命令行部署 curl -sSL https://shipyard-project.com/deploy | bash -s
  • docker run –rm -v /var/run/docker.sock:/var/run/docker.sock shipyard/deploy start

    工具类,本地开发测试很不错

  • Redis docker run –name myredis -p 6380:6379 -v /data/redis:/data -d redis redis-server –appendonly yes
  • Mysql
  • MongoDB
  • Nginx
  • Tomcat 看了下Dockerfile,用的是openjdk,不知道有没有坑。

    Swarm

  • 官方的Docker的集群管理工具

    alpine

  • 一个只有5MB的linux包,dockfile构建工具时候一个很好的依赖